<?php
/**
 * Description of EnderecoDAO
 *
 * @author Hiago
 */
class EnderecoDAO {

    public static function inserir(Endereco $endereco) {
        $con = new bd();
        try {
            $con->beginTransaction();
            $stmt = $con->prepare("INSERT INTO `endereco` (`id_cidade`,`rua`,`numero`,`complemento`)
            VALUES(?,?,?,?);");
            $dados = Array($endereco->getCidade()->getIdCidade(), $endereco->getRua(),
                $endereco->getNumero(), $endereco->getComplemento());
            $stmt->execute($dados);
            $id = $con->lastInsertId();
            $con->ocorreramErros($stmt);
            $endereco->setIdEndereco($id);
            $con->commit();
        } catch (Exception $ex) {
            $con->rollBack();
        }
    }

    public static function atualizar(Endereco $endereco) {
        $con = new bd();
        $stmt = $con->prepare("UPDATE `endereco` SET `id_cidade` = ?,`rua` = ?,`numero` = ?, `complemento` = ?
                                WHERE `idEndereco`=?;");
        $dados = Array($endereco->getCidade()->getIdCidade(), $endereco->getRua(),
            $endereco->getNumero(), $endereco->getComplemento(), $endereco->getIdEndereco());
        $stmt->execute($dados);
        $con->ocorreramErros($stmt);
    }

    public static function getById($id) {
        $con = new bd();
        $stmt = $con->prepare("SELECT `endereco`.`idEndereco`,`endereco`.`rua`,`endereco`.`numero`,
            `endereco`.`complemento`,`endereco`.`id_cidade` FROM `endereco` where `endereco`.`idEndereco` = ?;");
        $stmt->execute(Array($id));
        $con->ocorreramErros($stmt);

        $r = $stmt->fetch();
        $cidadeDAO = new CidadeDAO();
        $cidade = $cidadeDAO->getById($r[4]);
        return new Endereco($r[0], $r[1], $r[2], $r[3], $cidade);
    }

    public function listar() {
        $con = new bd();
        $stmt = $con->prepare("SELECT `endereco`.`idEndereco`,`endereco`.`rua`,`endereco`.`numero`,
            `endereco`.`complemento`,`endereco`.`id_cidade` FROM `endereco`");
        $stmt->execute();
        $con->ocorreramErros($stmt);

        $enderecos = Array();
        while ($r = $stmt->fetch()) {
            $cidadeDAO = new CidadeDAO();
            $cidade = $cidadeDAO->getById($r[4]);
            $enderecos[] = new Endereco($r[0], $r[1], $r[2], $r[3], $cidade);
        }
        return $enderecos;
    }

    public function excluir(Endereco $endereco) {

        $con = new bd();
        $stmt = $con->prepare("DELETE FROM `endereco` WHERE  `idEndereco`= ?;");

        $dados = Array($endereco->getIdEndereco());
        $stmt->execute($dados);
        $con->ocorreramErros($stmt);
    }

}

?>
